[SPIR-V] Add descriptor heap RaytracingAccelerationStructure support#8518
[SPIR-V] Add descriptor heap RaytracingAccelerationStructure support#8518jzakharovnv wants to merge 6 commits into
Conversation
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
b7b19c0 to
d77c9f7
Compare
Building off of microsoft#8281, this commit adds a native lowering via SPV_EXT_descriptor_heap and SPV_KHR_untyped_pointers. ResourceDescriptorHeap and SamplerDescriptorHeap are lowered to untyped variables decorated with ResourceHeapEXT and SamplerHeapEXT. Each heap access emits OpUntypedAccessChainKHR into a runtime array of the appropriate descriptor type. Buffer-like resources (StructuredBuffer, ByteAddressBuffer, ConstantBuffer, TextureBuffer) use OpTypeBufferEXT and OpBufferPointerEXT; image and sampler resources use OpLoad. Interlocked operations on RWTexture use OpUntypedImageTexelPointerEXT. Requires -fspv-target-env=vulkan1.3. Assisted-by: Claude.
d899b05 to
b12b9ea
Compare
|
@microsoft-github-policy-service agree company="NVIDIA" |
b12b9ea to
23eca97
Compare
| return true; | ||
| } | ||
|
|
||
| if (isRaytracingAccelerationStructure(decl->getType())) { |
There was a problem hiding this comment.
Since acceleration structures are distinct from image and buffers, do they still fit in max(sizeof(image), sizeof(buffer))? If not, the stride will be too small and heap indexing will land in the wrong spot.
Maybe we need to incorporate acceleration structures when computing the default stride if RT is used?
There was a problem hiding this comment.
Good catch, it would be correct to include acceleration structures in the computation for the resource heap stride. Will address this in my next set of commits.
| @@ -0,0 +1,42 @@ | |||
| // RUN: %dxc -T lib_6_6 -fspv-use-descriptor-heap -fspv-target-env=vulkan1.3 -fvk-resource-heap-stride 64 -fvk-sampler-heap-stride 32 -fspv-extension=SPV_KHR_ray_tracing -fspv-extension=SPV_EXT_descriptor_heap -fspv-extension=SPV_KHR_untyped_pointers -spirv %s | FileCheck %s | |||
There was a problem hiding this comment.
Another result of some clumsy commits and now outdated commits! Should be able to remove the usage of these flags now that strides are computed automatically. Will address next set of commits.
Extends the SPV_EXT_descriptor_heap native heap lowering to cover RaytracingAccelerationStructure resources loaded from ResourceDescriptorHeap. Acceleration structure descriptors are accessed via OpUntypedAccessChainKHR into a runtime array of OpTypeAccelerationStructureKHR, consistent with the image and sampler paths added in the previous commit.
23eca97 to
7455a45
Compare
Building off of #8517, this PR extends the SPV_EXT_descriptor_heap native heap lowering to cover RaytracingAccelerationStructure resources loaded from ResourceDescriptorHeap. It is part 2/4 in a series.
Acceleration structure descriptors are accessed via OpUntypedAccessChainKHR into a runtime array of OpTypeAccelerationStructureKHR, consistent with the image and sampler paths added in the previous commit.
Assisted by an AI agent
@dnovillo